import java.util.ArrayList;

public class GenericsDemos2 {
    public static void main(String[] args) {
        ArrayList<Ye1> list1 = new ArrayList<>();
        ArrayList<Fu1> list2 = new ArrayList<>();
        ArrayList<Zi1> list3 = new ArrayList<>();
        ArrayList<Studnet> list4 = new ArrayList<>();

        method(list1);
        method(list2);
        method(list3);
        method(list4);


    }

    /*此时，泛型厘米爱你写的是什么类型，那么只能传递什么类型的数据
     * 弊端：利用泛型方法有一个小弊端：此时可以接受任意数据类型，不受约束*/

    /*希望只传递Ye Fu Zi
    * 可以使用泛型的通配符：
    *    ？也表示不确定的类型
    *     但是可以进行类型的限定
    *     ？entends E:表示可以传递E或者E所有的子类类型
    *     ？super E:表示可以传递E或者E所有的父类类型*/
/*public static <E> void method(ArrayList<？ entends Ye> list) {

    }*/
    public static <E> void method(ArrayList<E> list) {

    }

}

class Ye1 {
}

class Fu1 extends Ye1 {
}

class Zi1 extends Fu1 {
}

class Studnet {
}